
### 第三批数据：1:敏感语料（短语，6754）+ 长文本（小说，2002） 2:微博评论原文（senti100k,处理特殊字符），8756条，测试集比例0.1

### 第三批数据：1:敏感语料（短语，6754）+ 长文本（小说，2002） 2:微博评论原文（senti100k,处理特殊字符，6754）+ 搜狗新闻（长文本，2002），测试集比例0.1



import pandas as pd
import os
import re
import random
random.seed(7)

def clean(text):
    text = re.sub(r"(回复)?(//)?\s*@\S*?\s*(:| |$)", " ", text)  # 去除正文中的@和回复/转发中的用户名
    text = re.sub(r"\[\S+\]", "", text)      # 去除表情符号
    text = re.sub(r"#\S+#", "", text)      # 去除话题内容
    text = re.sub(r"【\S+】", "", text)      # 去除标题
    URL_REGEX = re.compile(
        r'(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))',
        re.IGNORECASE)
    text = re.sub(URL_REGEX, "", text)       # 去除网址
    text = text.replace("转发微博", "")       # 去除无意义的词语
    text = text.replace("本报讯", "") 
    text = re.sub(r"\s+", " ", text) # 合并正文中过多的空格
    return text.strip()


df_1 = pd.read_excel('/Users/leo/Data/项目数据/文德数慧-文本内容审核/分类实验/数据/网络信息语料 文德 20210122.xlsx', sheet_name='测试集')
df_2 = pd.read_excel('/Users/leo/Data/项目数据/文德数慧-文本内容审核/分类实验/数据/文字收集(已去重).xlsx',header=None)

df_0 = pd.read_csv('/Users/leo/Data/项目数据/文德数慧-文本内容审核/分类实验/数据/weibo_senti_100k.csv')
df_0 = df_0.sample(n=10000).reset_index(drop=True) # 有一些处理之后为空的，不要

files = []
for path,dirs,file_names in os.walk('/Users/leo/Data/项目数据/文德数慧-文本内容审核/分类实验/数据/5类'):
    for file in file_names:
        files.append(os.path.join(path,file))

lines = []
for file in files:
    if '.txt' in file:
        try:
            with open(file,'r',encoding='gb2312') as f:
                for line in f.readlines():
                    line = line.strip()
                    if len(line) >= 80 and len(line) <= 150:
                        lines.append(line)
        except:
            pass


line_select = random.sample(lines,2002)
                

data = pd.DataFrame(columns=['label','text'])

# 加入微博数据
count = 0
for i in range(len(df_0)):
    label = 0
    text = clean(df_0.iloc[i]['review'])
    if text:
        count += 1
        data = data.append(pd.DataFrame({'label':[label],'text':[clean(text)]}),ignore_index=True)
        if count == 6754:
            break

# 加入新闻数据
for line in line_select:
    label = 0
    text = clean(line)
    data = data.append(pd.DataFrame({'label':[label],'text':[text]}),ignore_index=True)


print(len(data))

for i in range(len(df_1)):
    label = 1
    text = df_1.iloc[i]['内容']
    data = data.append(pd.DataFrame({'label':[label],'text':[text]}),ignore_index=True)

print(len(df_1))

for i in range(len(df_2)):
    label = 1
    text = df_2.iloc[i][0]
    text = text.replace("\r","").replace('\n',"").strip()
    data = data.append(pd.DataFrame({'label':[label],'text':[text]}),ignore_index=True)

print(len(df_2))

assert len(data) == 8756*2

data['label'] = data['label'].astype(int)
data = data.sample(frac=1).reset_index(drop=True)

data_test = data[:int(len(data)*0.1)]
data_train = data[int(len(data)*0.1):]
print(len(data_test))
print(len(data_train))



data_train.to_csv(r"/Users/leo/Data/项目数据/文德数慧-文本内容审核/分类实验/数据/data_bert/v3/train.tsv",sep='\t',header=False,index=False)
data_test.to_csv(r"/Users/leo/Data/项目数据/文德数慧-文本内容审核/分类实验/数据/data_bert/v3/test.tsv",sep='\t',header=False,index=False)
data_test.to_csv(r"/Users/leo/Data/项目数据/文德数慧-文本内容审核/分类实验/数据/data_bert/v3/dev.tsv",sep='\t',header=False,index=False)
